home *** CD-ROM | disk | FTP | other *** search
- unit TstExMgU;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Label1: TLabel;
- Label2: TLabel;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- uses
- AAExtMge;
-
- const
- MyRecCount = 400000;
- MyRecLen = 64;
-
- function MyCompare(const aItem1, aItem2 : pointer) : integer;
- var
- Item1 : PByteArray;
- Item2 : PByteArray;
- i : integer;
- begin
- Item1 := aItem1;
- Item2 := aItem2;
- for i := 0 to pred(MyRecLen) do begin
- if Item1^[i] < Item2^[i] then begin
- Result := -1;
- Exit;
- end;
- if Item1^[i] > Item2^[i] then begin
- Result := 1;
- Exit;
- end;
- end;
- Result := 0;
- end;
-
- procedure CreateInputFile;
- var
- S : TFileStream;
- i, j : integer;
- Buffer : array [0..pred(MyRecLen)] of byte;
- begin
- S := TFileStream.Create('C:\unsorted.dat', fmCreate);
- try
- for i := 1 to MyRecCount do begin
- for j := 0 to MyRecLen-3 do
- Buffer[j] := Random(26) + ord('A');
- Buffer[MyRecLen-2] := 13;
- Buffer[MyRecLen-1] := 10;
- S.WriteBuffer(Buffer, sizeof(Buffer));
- end;
- finally
- S.Free;
- end;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- StartTime : integer;
- EndTime : integer;
- begin
- Button1.Enabled := false;
- try
- Label1.Caption := 'creating';
- Label1.Update;
- CreateInputFile;
- Label1.Caption := 'sorting';
- Label1.Update;
- StartTime := GetTickCount;
- aaMergesortFixed('C:\unsorted.dat', 'c:\sorted.dat', MyRecLen, MyCompare);
- EndTime := GetTickCount;
- Label1.Caption := 'done';
- finally
- Button1.Enabled := true;
- end;
- Label2.Caption := IntToStr(EndTime-StartTime);
- end;
-
- end.
-